﻿// 829. 连续整数求和.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using  namespace std;

/*
https://leetcode.cn/problems/consecutive-numbers-sum/

给定一个正整数 n，返回 连续正整数满足所有数字之和为 n 的组数 。


示例 1:
输入: n = 5
输出: 2
解释: 5 = 2 + 3，共有两组连续整数([5],[2,3])求和后为 5。


示例 2:
输入: n = 9
输出: 3
解释: 9 = 4 + 5 = 2 + 3 + 4


示例 3:
输入: n = 15
输出: 4
解释: 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5


提示:
1 <= n <= 10^9​​​​​​​
*/


class Solution {
public:
    int ans = 0;

    void solve(int n, int d) {
        if ((2 * n / d - d + 1) % 2 != 0) return;
        ans++; return;
    }

    int consecutiveNumbersSum(int n) {
        for (int d = 1; d * d <= 2 * n; d++) {
            if (2 * n % d == 0)
                solve(n, d);
        }

        return ans;
    }
};


int main()
{
    Solution s;
    s.consecutiveNumbersSum(15);

    return 0;
}

